package bTree.LeetCode;

import java.util.*;

public class 找到和最大的长度为K的子序列 {
    public int[] maxSubsequence(int[] nums, int k) {
        int[] ints = Arrays.copyOf(nums, nums.length);
        Map<Integer, List<Integer>> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (!map.containsKey(nums[i])){
                List<Integer> objects = new ArrayList<>();
                map.put(nums[i],objects);
               objects.add(i);
            }else {
                List<Integer> list = map.get(nums[i]);
                list.add(i);
            }
        }
        Arrays.sort(ints);
        List<Integer> list = new ArrayList<>();
        int cnt = 0;
        for (int i = nums.length - 1; i >= 0; i--) {
            if (cnt == k) {
                break;
            } else {
                List<Integer> list1 = map.get(ints[i]);
                list.add(list1.get(0));
                list1.remove(0);
                cnt++;
            }
        }
        Collections.sort(list);
        int []res=new int[k];
        int a=0;
        for (int i = 0; i < list.size(); i++) {
            res[a++]=nums[list.get(i)];
        }
        return res;
    }
}